When a computer system is started or reset, either by turning the power on or requesting a reset operation, the computer system executes a series of instructions in a process called “bootstrapping” or “boot process” in order to prepare the computer system for operations under the operating system. During the boot process, the Central Processing Unit (CPU) fetches initial program instructions (e.g., basic input/output system (BIOS)) from a predetermined location. The initial program instructions, a boot sequence, are typically responsible for performing basic hardware tests and loading a boot image into system memory. A boot image may be stored in a non-volatile storage device, a boot memory, such as a read only memory (ROM), programmable ROM (PROM), flash memory, etc.
Some computer systems incorporate multiple copies of the boot image (e.g., by maintaining a primary boot image and a backup the boot image) so that the operating system can be loaded and initialized even if one of the boot images becomes corrupted. When the system fails to boot utilizing the primary boot image, an operator may attempt to boot the system utilizing the backup boot image. In order to select the backup boot image, however, it may be necessary to physically manipulate the system's hardware (e.g., by moving a jumper on the motherboard or by pressing a designated control button). Such a requirement is inconvenient and time consuming, as it prevents an operator from selecting a boot image and booting the system with the selected boot image remotely.
In many types of computer networks, it is desirable to be able to perform certain management related functions on processing system, including an ability to reboot the processing system, from a remote location. For example, a business enterprise may operate a large computer network that includes numerous client and server processing systems (hereinafter “clients” and “servers”, respectively). With such a network, it may be desirable to allow a network administrator to perform or control various functions on the clients and/or servers from a remote console via the network.
Some existing computer systems allow management related functions to be performed remotely via a network. In one approach, a device known as a service processor is incorporated into a processing system to enable remote management of the processing system (referred to as the “host” processing system) via a network. The service processor is often in the form of a dedicated circuit card separate from the other elements of the host processing system. The service processor normally has a network interface that connects to the network and a separate internal interface that connects to one or more components of the processing system. The service processor typically includes control circuitry (e.g., a microprocessor or microcontroller), which is programmed or otherwise configured to respond to commands received from a remote administrative console via the network, and to perform at least some of the management functions mentioned above.
The known service processor technology, however, does not enable a user to use a service processor to boot the host processing system remotely, utilizing a backup boot image in the event of a boot failure of the host processing system, such as may be due to the boot image corruption.